<?php
/**
* Classe de controle
* Executa a gravação de um objeto : Lançamento
* @package Sistema
* @subpackage Lançamento
*/
class CLancamento_gravar extends controlePadraoGravar{
	/**
	 * Lançamento de contra partida
	 * @var NLancamento
	 */
	protected $negocio2;

	/**
	 * Define o objeto de negócio a ser utilizado na operação
	 */
	public function definirNegocio(){
		$c = conexao::criar();
		$negocio = definicaoEntidade::negocio($this);
		$this->negocio = new $negocio($c);
		if(isset($_POST['unica'])) $this->montarNegocio($this->negocio, $_POST['unica']);
		if(isset($_POST['dupla'])) {
			$this->negocio2 = new $negocio($c);
			$this->montarNegocio($this->negocio, $_POST['dupla']);
			$this->montarNegocio($this->negocio2, $_POST['dupla']);
			$this->negocio->passarTipo(NLancamento::Credito);
			$this->negocio2->passarTipo(NLancamento::Debito);
			$this->negocio2->passarIdConta($_POST['dupla']['idContaContraPartida']);
		}
	}
	/**
	* Método de utilização dos dados postados para a montagem do negocio
	* @param negocio objeto para preenchimento
	* @param array $dados
	*/
	public static function montarNegocio(negocio $negocio,$dados = null){
		if(isset($dados['unica']) || isset($dados['dupla'])) return;
		parent::montarNegocio($negocio, $dados);
		$sessao = new sessaoPrograma(definicaoEntidade::entidade($negocio));
		if((!$negocio->pegarIdLote()) && $sessao->tem('lote')){
			$negocio->passarIdLote($sessao->pegar('lote')->valorChave());
		}
	}
	/**
	 * Realiza a operação de gravação do objeto de negócio
	 */
	public function gravar(){
		$this->negocio->gravar();
		if($this->negocio2) $this->negocio2->gravar();
	}
	/**
	* Método de retorno da da mensagem da operação
	*/
	public function retornarMensagem(){
		if($this->requisicaoAjax()){
			$arRes['mensagem'] = $this->inter->pegarMensagem('gravarSucesso');
			$arRes['id'] = $this->negocio->valorChave();
			$arRes['obj'] = $this->negocio;
			if($this->negocio2) $arRes['obj2'] = $this->negocio2;
			$json = new json();
			echo $json->pegarJson($arRes);
		}else{
			$this->registrarComunicacao($this->inter->pegarMensagem('gravarSucesso'));
		}
	}
}
?>